perm filename APP6[AIM,DBL]3 blob
sn#126861 filedate 1974-10-29 generic text, type T, neo UTF8
00100 .DEVICE XGP
00200 .FONT 1 "FIX25"
00300 .FONT 2 "SIGN57"
00400 .FONT 3 "SHD40"
00500 .FONT 4 "BDI25"
00600 .FONT 5 "NGB30"
00700 .FONT 6 "NGR20"
00800 .PAGE FRAME 53 HIGH 75 WIDE
00900 .TURN ON "↓_π{"
01000 .TURN ON "\" FOR "%"
01100 .MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200 .MACRO E ⊂ APART END ⊃
01300 .TABBREAK
01400 .EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
01500 .EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
01600 .COUNT PAGE PRINTING "1"
01700 .NEXT PAGE
01800
00100 \2APPENDIX 6. \* \3CF .... RUNNING\*
00200 .NOFILL
00300
00400
00500
00600
00700 \5<Here is the synthesized program itself, CF, running.>\*
00800
00900 ←\4ENTER(T)\*
01000
01100 USER INTERRUPT LEVEL... \40\*
01200
01300
01400 \5PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
01500
01600
01700 \5PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
01800 CLASSIFICATORY:CONCEPT:FORMATION)
01900
02000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02100
02200 \4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
02300
02400 ARCH
02500 OBJECTS (A B C)
02600 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02700
02800 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02900
03000 \4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
03100
03200 ARCH
03300 OBJECTS (A B C)
03400 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
03500
03600 TOWER
03700 OBJECTS (A B C D)
03800 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
03900
04000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
04100
04200 \4(??? (A B C) (S A B) (S C B))\*
04300
04400 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
04500 ARCH))
04600
04700 PLEASE GIVE ME NAME:OF:CLASS
04800
04900 \4ARCH\*
05000
05100 ARCH
05200 OBJECTS (A B C)
05300 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
05400
05500 TOWER
05600 OBJECTS (A B C D)
05700 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
05800
05900 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
06000
06100 \4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B))\*
06200
06300 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
06400 ARCH))
06500
06600 PLEASE GIVE ME NAME:OF:CLASS
06700
06800 \4NOTHING\*
06900
07000 ARCH
07100 OBJECTS (A B C)
07200 MUSNT HAVE ((TOUCH A C))
07300 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
07400
07500 TOWER
07600 OBJECTS (A B C D)
07700 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
07800
07900 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
08000
08100 \4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
08200
08300 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
08400 ARCH))
08500
08600 PLEASE GIVE ME NAME:OF:CLASS
08700
08800 \4NOTHING\*
08900
09000 ARCH
09100 OBJECTS (A B C)
09200 MUST HAVE ((S A B))
09300 MUSNT HAVE ((TOUCH A C))
09400 MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
09500
09600 TOWER
09700 OBJECTS (A B C D)
09800 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
09900
10000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
10100
10200 \4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
10300
10400 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
10500 ARCH))
10600
10700 PLEASE GIVE ME NAME:OF:CLASS
10800
10900 \4NOTHING\*
11000
11100 ARCH
11200 OBJECTS (A B C)
11300 MUST HAVE ((S A B) (S C B))
11400 MUSNT HAVE ((TOUCH A C))
11500 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
11600
11700 TOWER
11800 OBJECTS (A B C D)
11900 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
12000
12100 \5<notice that at this point, the model for ARCH is the usual one>\*
12200
12300
12400 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
12500
12600 \4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
12700
12800 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
12900 TOWER))
13000
13100 PLEASE GIVE ME NAME:OF:CLASS
13200
13300 \4ROW\*
13400
13500 ARCH
13600 OBJECTS (A B C)
13700 MUST HAVE ((S A B) (S C B))
13800 MUSNT HAVE ((TOUCH A C))
13900 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
14000
14100 TOWER
14200 OBJECTS (A B C D)
14300 MUST HAVE ((S A B))
14400 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
14500
14600 ROW
14700 OBJECTS (A B C)
14800 MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
14900
15000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
15100
15200 \4(ARCH (A B C D) (S A B) (TOUCH A C))\*
15300
15400 ARCH
15500 OBJECTS (A B C (D))
15600 MUST HAVE ((S A B))
15700 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
15800
15900 \5<notice how contradictory user input is handled: features are simply
16000 transferred from the MUST/MUSTNOT sets to the MAY set>\*
16100
16200 TOWER
16300 OBJECTS (A B C D)
16400 MUST HAVE ((S A B))
16500 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
16600
16700 ROW
16800 OBJECTS (A B C)
16900 MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
17000
17100
17200 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
17300
17400 \4(HALT)\*
17500
17600 \5PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY:CONCEPT:FORMATION TYPE OF
17700 CONCEPT:FORMATION)
17800
17900
18000
18100
18200 FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
18300
18400 1 EXIT FROM SYSTEM
18500 2 CONTINUE SERVING, AS BEFORE
18600 3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
18700 4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
18800
18900 OK, GO .......... \43\*
19000
19100 USER INTERRUPT LEVEL... \410\*
19200
19300 \5The user has switched to a mode where he can interrupt after each BEING
19400 gets control, and ask it questions.\*
19500
19600 DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
19700
19800 \*REQUEST: \4CH
19900 \*NIL *** SATISFY *** (CF:1) \5<the control history stack. Note that the
20000 top element is CF:1, not SERVE.>\*
20100
20200 REQUEST: \4WHAT
20300 \*(SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON
20400 CONCEPT FORMATION)))
20500 REQUEST: \4HOW
20600 \*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
20700
20800 REQUEST: \4WHY
20900 \*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISITE
21000 TO BE SATISFIED)
21100
21200 REQUEST: \4OLDER
21300 \*CF:1
21400
21500 REQUEST: \4WHAT
21600 \*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT
21700 STRUCTURING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
21800 OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
21900
22000 REQUEST: \4WHY
22100 \*(CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE, AND CONCEPT:FORMATION
22200 IS TOO GENERAL TO USE AS IT IS)
22300
22400 REQUEST: \4QUIT
22500
22600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
22700 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
22800
22900 \*REQUEST: \4BEING
23000 \*PAD:2
23100
23200 REQUEST: \4WHAT
23300 \*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS;
23400 USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
23500 WILL BE THE ENTIRE DOMAIN))
23600
23700 REQUEST: \4WHY
23800 \*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO
23900 CLASSES, AND PARTITION:A:DOMAIN IS TOO GENERAL
24000 TO USE AS IT IS)
24100
24200 REQUEST: \4HOW
24300 \*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
24400 THE PARTITION ONE PAIR AT A TIME; HERE A
24500 PAIR IS <ELEMENT, CLASS:NAME>)
24600
24700 REQUEST: \4QUIT
24800
24900 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
25000
25100 \*REQUEST: \4CH
25200 \*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
25300
25400 REQUEST: \4WHY
25500 \*(PUP WANTS ELEMENT:4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT
25600 AND TAKE:HOLD:OF IS TOO GENERAL TO USE AS
25700 IT IS)
25800
25900 REQUEST: \4HOW
26000 \*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER
26100 TO GIVE ELEMENT:4 TO US)
26200
26300 REQUEST: \4AFFECTS
26400 \*((ELEMENT:4 POSSIBLE CALLED)
26500 (ELEMENT:OBJECTS:11 POSSIBLE CALLED)
26600 (ELEMENT:CLASSNAME:13 POSSIBLE CALLED)
26700 (ELEMENT:RELNS:15 POSSIBLE CALLED))
26800
26900 REQUEST: \4QUIT
27000
27100
27200 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
27300
27400 \4(??? (A B) (BLOCK A]\*
27500
27600 DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
27700 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
27800
27900 \*REQUEST: \4CH
28000 \*NIL *** SOME:PART:OF:14 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
28100
28200 REQUEST: \4WHAT
28300 \*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT
28400 BREAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
28500
28600 REQUEST: \4WHY
28700 \*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT, AND
28800 SOME:PART:OF IS TOO GENERAL TO USE AS IT IS)
28900
29000 REQUEST: \4META:CODE
29100 \*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
29200 EVAL ARG1))
29300 (CAR ARG1))
29400
29500 REQUEST: \4QUIT
29600
29700 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
29800 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
29900 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
30000 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
30100
30200 \*REQUEST: \4CH
30300 \*NIL *** FOREACH:17 *** (GET:HOLD:OF:8 PAD:2 CF:1)
30400
30500 REQUEST: \4WHAT
30600 \*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBLE
30700 NAMES:OF:CLASS ,WHICH IS
30800 SET:OF:POSSIBLE:NAMES:OF:CLASS ,AND PERFORM
30900 (TEST:18 POSSIBLE:NAME:OF:CLASS
31000 (COMMENT FOR SATISFACTION OF GOAL CRITERIA))
31100 ON EACH, UNTIL SOME SPECIFIED TERMINATION
31200 CONDITION IS REACHED))
31300
31400 REQUEST: \4QUIT
31500
31600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
31700
31800 \*REQUEST: \4BEING
31900 \*TEST:18
32000
32100 REQUEST: \4WHAT
32200 \*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS
32300 THE DESIRED CONDITIONS (COMMENT FOR SATISFACTION
32400 OF GOAL CRITERIA)))
32500
32600 REQUEST: \4QUIT
32700
32800 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
32900 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
33000 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
33100 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
33200
33300 \*REQUEST: \4CH
33400 \*NIL *** COMPARE:26 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8
33500 PAD:2 CF:1)
33600
33700 REQUEST: \4WHAT
33800 \*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B)
33900 (BLOCK C) (TOUCH A C) (S C B))
34000 WITH
34100 ((BLOCK A))))
34200
34300 REQUEST: \4WHY
34400 \*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C)
34500 S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
34600 AND COMPARE IS TOO GENERAL TO USE AS IT IS)
34700
34800 REQUEST: \4QUIT
34900
35000 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
35100
35200 \*REQUEST: \4CH
35300 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
35400 GET:HOLD:OF:8 PAD:2 CF:1)
35500
35600 REQUEST: \4WHAT
35700 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
35800 THE COLLECTION ((BLOCK A))))
35900
36000 REQUEST: \4HOW
36100 \*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
36200 RELATIONSHIP BETWEEN (S A B) AND ((BLOCK A)))
36300
36400 REQUEST: \4QUIT
36500
36600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
36700
36800 \*REQUEST: \4CH
36900 \*NIL *** JOIN:23 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PAD:2
37000 CF:1)
37100
37200 REQUEST: \4QUIT
37300
37400 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
37500
37600 \*REQUEST: \4CH
37700 \*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
37800
37900 REQUEST: \4QUIT
38000
38100 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38200 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38300 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38400 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
38500 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
38600
38700 \*REQUEST: \4CH
38800 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
38900 GET:HOLD:OF:8 PAD:2 CF:1)
39000
39100 REQUEST: \4META:CODE
39200 \*(PROGN
39300 (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
39400 (COMMENT IN ALL CALLS TO DATE, ARG2 IS
39500 INSTANTIATED AS ELEMENT:RELNS:15)
39600 (COND ((MEMBER ARG1 YES:RELNS:28)
39700 (COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
39800 BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
39900 (NOT (MEMBER ARG1 ARG2)))
40000 ((MEMBER ARG1 NO:RELNS:29)
40100 (COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A
40200 CONTRADICTION IFF IT IS A MEMBER OF ARG2)
40300 (MEMBER ARG1 ARG2))
40400 (T (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2; EITHER
40500 CASE IS ALLOWABLE; SO WE NEVER HAVE A
40600 CONTRADICTION)
40700 NIL)))
40800
40900
41000 REQUEST: \4QUIT
41100
41200 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
41300 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
41400
41500 \*REQUEST: \4CH
41600 \*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
41700
41800 REQUEST: \4WHAT
41900 \*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
42000 DESIRED CONDITIONS (COMMENT FOR SATISFACTION
42100 OF GOAL CRITERIA)))
42200
42300 REQUEST: \4QUIT
42400
42500 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42700 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42800 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
42900 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
43000 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
43100 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
43200
43300 \*REQUEST: \4CH
43400 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
43500 GET:HOLD:OF:8 PAD:2 CF:1)
43600
43700 REQUEST: \4WHAT
43800 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION
43900 TO THE COLLECTION ((BLOCK A))))
44000
44100 REQUEST: \4QUIT
44200
44300 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
44400
44500 \*REQUEST: \4CH
44600 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
44700 GET:HOLD:OF:8 PAD:2 CF:1)
44800
44900 REQUEST: \4WHAT
45000 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
45100 THE COLLECTION ((BLOCK A))))
45200
45300 REQUEST: \4QUIT
45400
45500 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
45600
45700
45800 \*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS
45900 IS ROW))
46000
46100 DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
46200
46300 \*REQUEST: \4CH
46400 \*NIL *** ASK:USER:ABOUT:60 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
46500
46600 REQUEST: \4WHAT
46700 \*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION
46800 INVOLVING NAME:OF:CLASS))
46900
47000 REQUEST: \4WHY
47100 \*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK:USER:ABOUT
47200 IS TOO GENERAL TO USE AS IT IS)
47300
47400 REQUEST: \4HOW
47500 \*(ASK THE USER WHAT THE RESOLUTION IS)
47600
47700 REQUEST: \4META:CODE
47800 \*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
47900 NAME:OF:CLASS))
48000 (PRIN1
48100 "
48200 PLEASE GIVE ME ")
48300 (PRINT ARG1)
48400 (SET ARG1 (READ)))
48500
48600
48700 REQUEST: \4QUIT
48800 \*
48900
49000
49100 PLEASE GIVE ME NAME:OF:CLASS
49200
49300 \4NOTHING\*
49400
49500 DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
49600
49700 \*REQUEST: \4CH
49800 \*NIL *** MODIFY:STRUCTURE:9 *** (PAD:2 CF:1)
49900
50000 REQUEST: \4WHAT
50100 \*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING
50200 "NOTHING" AS AN ELEMENT))
50300
50400 REQUEST: \4QUIT
50500
50600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
50700
50800 \*REQUEST: \4BEING
50900 \*CONDITIONAL:INSERTION:44
51000
51100 REQUEST: \4QUIT
51200
51300 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
51400 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
51500 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
51600
51700 \*REQUEST: \4CH
51800 \*NIL *** COMPLEX:ALTERATION:46 *** (COMPLEX:ALTERATION:45
51900 MODIFY:STRUCTURE:9 PAD:2 CF:1)
52000
52100 REQUEST: \4WHAT
52200 \*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF
52300 THE SAME OUTER LIST))
52400
52500 REQUEST: \4WHY
52600 \*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALENT
52700 TO UPDATING OUR DESCRIPTION OF A SINGLE
52800 PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL
52900 TO A DECENT CONCEPT FORMATION
53000 PROGRAM, AND COMPLEX:ALTERATION IS TOO GENERAL
53100 TO USE AS IT IS)
53200
53300 REQUEST: \4HOW
53400 \*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
53500
53600 REQUEST: \4OLDER
53700 \*COMPLEX:ALTERATION:45
53800
53900 REQUEST: \4CH
54000 \*(COMPLEX:ALTERATION:46) *** COMPLEX:ALTERATION:45 *** (MODIFY:STRUCTURE:9
54100 PAD:2 CF:1)
54200
54300 REQUEST: \4QUIT
54400
54500 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
54600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
54700 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
54800 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
54900
55000 \*REQUEST: \4CH
55100 \*NIL *** IS:OF:TYPE:61 *** (PAD:2 CF:1)
55200
55300 REQUEST: \4WHAT
55400 \*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED.
55500 THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
55600 KNOWLEDGE: (COMMENT BREAKAWAY)))
55700
55800 REQUEST: \4META:CODE
55900 \*(EQUAL NAME:OF:CLASS HALT)
56000
56100 REQUEST: \4QUIT
56200
56300 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
56400
56500 \*REQUEST: \4CH
56600 \*NIL *** FOREACH *** (PAD:2 CF:1)
56700
56800 REQUEST: \4WHAT
56900 \*(GO THROUGH THE KNOWN SPACE OF NAMES,
57000 WHICH IS SET:OF:POSSIBLE:NAMES:OF:CLASS,
57100 AND PERFORM
57200 (PROGN (PRINT NAME)
57300 (COND ((GETP NAME CLASS:OBJECTS:33)
57400 (PRIN1 "OBJECTS ")
57500 (PRINT (GETP NAME
57600 CLASS:OBJECTS:33))))
57700 (COND ((GETP NAME CLASS:YES:RELNS:35)
57800 (PRIN1 "MUST HAVE ")
57900 (PRINT (GETP NAME
58000 CLASS:YES:RELNS:35))))
58100 (COND ((GETP NAME CLASS:NO:RELNS:36)
58200 (PRIN1 "MUSNT HAVE ")
58300 (PRINT (GETP NAME
58400 CLASS:NO:RELNS:36))))
58500 (COND ((GETP NAME CLASS:MAYBE:RENS:37)
58600 (PRIN1 "MAY HAVE ")
58700 (PRINT (GETP NAME
58800 CLASS:MAYBE:RELNS:37))))
58900 (TERPRI)
59000 T)
59100 ON EACH, UNTIL
59200 SOME SPECIFIED TERMINATION CONDITION IS REACHED)
59300
59400
59500 REQUEST: \4QUIT
59600 \*
59700
59800 ARCH
59900 OBJECTS (A B C (D))
60000 MUST HAVE ((S A B))
60100 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
60200
60300 TOWER
60400 OBJECTS (A B C D)
60500 MUST HAVE ((S A B))
60600 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
60700
60800 ROW
60900 OBJECTS (A B C)
61000 MUST HAVE ((TOUCH A C))
61100 MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
61200
61300
61400 DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
61500
61600 \*REQUEST: \4SET:OF:POSSIBLE:NAMES:OF:CLASS
61700 \*(ARCH TOWER ROW)
61800
61900 REQUEST: \4CH
62000 \*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
62100
62200 REQUEST: \4WHAT
62300 \*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT:4 IN A TRIVIAL
62400 WAY; EITHER BY ACCESSING IT OR BY READING
62500 IT IN))
62600
62700 REQUEST: \4QUIT
62800
62900
63000 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
63100
63200 \4(??? (A B C) (BLOCK A) (BLOCK B]\*
63300
63400
63500 DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
63600
63700 \*REQUEST: \4ELEMENT:4
63800 \*(??? (A B C) (BLOCK A) (BLOCK B))
63900
64000 REQUEST: \4CH
64100 \*NIL *** SOME:PART:OF:12 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
64200
64300 REQUEST: \4QUIT
64400
64500 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
64600 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
64700 .
64800 .
64900 .
65000 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
65100 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
65200 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
65300 \*
65400
65500
65600 (COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
65700
65800 .
65900 .
66000 .
66100
66200 REQUEST: \4CH
66300 \*NIL *** SIMPLE:COMPARE:FN:43 *** (BETTER:38 CONDITIONAL:INSERTION:55
66400 MODIFY:STRUCTURE:42 COMPLEX:ALTERATION:45
66500 MODIFY:STRUCTURE:9 PAD:2 CF:1)
66600
66700 REQUEST: \4WHAT
66800 \*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
66900 A CONSTANT VALUE))
67000
67100 REQUEST: \4WHY
67200 \*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE, AND SIMPLE:COMPARE:FN IS
67300 TOO GENERAL TO USE AS IT IS)
67400
67500 REQUEST: \4QUIT
67600
67700 \*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YYES
67800 \*
67900 WRONG; TYPE YES OR NO ......... INTERRUPT? \4YES
68000
68100 \*REQUEST: \4CH
68200 \*NIL *** BETTER:38 *** (CONDITIONAL:INSERTION:55 MODIFY:STRUCTURE:42
68300 COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
68400 CF:1)
68500
68600 REQUEST: \4EXPLICIT:ARGS
68700 \*(B1 B2)
68800
68900 REQUEST: \4B1
69000 \*(S A B)
69100
69200 REQUEST: \4B2
69300 \*(S C D)
69400
69500 REQUEST: \4OLDER
69600 \*CONDITIONAL:INSERTION:55
69700
69800 REQUEST: \4CH
69900 \*(BETTER:38) *** CONDITIONAL:INSERTION:55 *** (MODIFY:STRUCTURE:42
70000 COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
70100 CF:1)
70200
70300 REQUEST: \4WHAT
70400 \*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A
70500 ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE
70600 ELEMENT INTO ITS PARENT
70700 STRUCTURE))
70800
70900 REQUEST: \4META:CODE
71000 \*(PROGN
71100 (SETQ RESULT:7 (LIST:JOIN RESULT:5 RESULT:6
71200 (SETDIFFERENCE ELEMENT:RELNS:15
71300 (APPEND (GETP NAME:OF:CLASS
71400 CLASS:YES:RELNS:35)
71500 (GETP NAME:OF:CLASS
71600 CLASS:NO:RELNS:36)
71700 (GETP NAME:OF:CLASS
71800 CLASS:MAYBE:RELNS:37))
71900 )))
72000 NIL
72100 (COND
72200 (RESULT:7
72300 (PUT NAME:OF:CLASS
72400 CLASS:MAYBE:RELNS:37
72500 (MERGE:IN RESULT:7
72600 (GETP NAME:OF:CLASS
72700 CLASS:MAYBE:RELNS:37)
72800 BETTER:38)))
72900 (T (SETQ RESULT:7 NIL))))
73000
73100
73200 REQUEST: \4RESULT:7
73300 \*((S A B))
73400
73500 REQUEST: \4RESULT:6
73600 \*NIL
73700
73800 REQUEST: \4RESULT:5
73900 \*((S A B))
74000
74100 REQUEST: \4(GETP NAME:OF:CLASS CLASS:MAYBE:RELNS:37]
74200 \*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
74300
74400 REQUEST: \4QUIT
74500 .
74600 .
74700 .
74800 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
74900
75000 \4(HALT)\*
75100
75200
75300
75400 FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
75500
75600 1 EXIT FROM SYSTEM
75700 2 CONTINUE SERVING, AS BEFORE
75800 3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
75900 4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
76000
76100 OK, GO .......... \41\*
76200
76300 "EXITING SYSTEM"
76400
76500 \5<end of session with the synthesized program>\*
76600
76700 ←\4SET:OF:POSSIBLE:NAMES:OF:CLASS\*
76800 (ARCH TOWER ROW HALT)
76900
77000 ←\4CDR(ARCH)\*
77100 (CLASS:OBJECTS:33 (A B C (D))
77200 CLASS:CLASSNAME:34 ARCH
77300 CLASS:YES:RELNS:35 ((S A B))
77400 CLASS:NO:RELNS:36 NIL
77500 CLASS:MAYBE:RELNS:37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B)))